
<a name="1"></a>
<h2>先了解iphp的大概结构</h2>

<p>iphp主目录包含app，core，public，plus四个目录。</p>

<p>app：是包含整个web的逻辑控制、前端模板、web配置、依赖类库等文件。</p>

<p>core：是包含iphp的核心类iclass.php、初始文件、主要配置、框架入口等核心文件。</p>

<p>public：包含整个web应用的入口文件index.php和css、js等文件。</p>

<p>plus：是第三方类库目录。</p>

<hr />

<a name="2"></a>
<h2>如何部署？</h2>

<p>只需要将web服务器的主目录设置为iphp的public文件夹，然后将默认的主页设置为index.php。</p>

<p>这时候访问</p>

<blockquote>
    <p><a href="http://localhost">http://localhost</a></p>
</blockquote>

<p>就访问了iphp的入口文件：public/index.php。</p>

<p>一旦访问入口文件index.php，就会启动iphp框架，框架会将请求默认解析到app/c/index.php中的method的方法。</p>

<hr />

<a name="3"></a>
<h2>如何工作？</h2>

<p>当我们访问</p>

<blockquote>
    <p><a href="http://localhost/?_c=class_name&amp;_m=method_name">http://localhost/?_c=class_name&amp;_m=method_name</a></p>
</blockquote>

<p>的时候，iphp会通过解析url中的_c和_m参数访问/app/c/class_name.php中的method_name方法。</p>

<p>iphp框架默认的入口public/index.php会启动iphp框架，</p>

<p>iclass.php是核心的框架类文件，i是核心类。当iphp启动后，会运行 i 核心类中的 run() 方法。run()方法解析url中的参数_c和_m。</p>

<p>$_GET['_c']：运行app/c/中的哪个类。</p>

<p>$_GET['_m']：运行类中的哪个方法。</p>

<hr />

<a name="4"></a>
<h2>自己试一试：helloword。</h2>

<p>1、在app/c/目录中建立文件hello.php文件
    2、hello.php中键入</p>

<pre><code>&lt;?php
        namespace c;

        class hello extends \i{
            private static $_i;
            public static function i($pars=[]){
                self::$_i or self::$_i=new \c\hello($pars);
                return self::$_i;
            }
            public function __construct($pars=[]){
                parent::__construct($pars);
            }
            public function world()
            {
                echo "hello world";
            }
        }
    </code></pre>

<p>3、访问</p>

<blockquote>
    <p><a href="http://localhost/?_c=hello&amp;_m=world">http://localhost/?_c=hello&amp;_m=world</a></p>
</blockquote>

<p>就会调用我们新建的hello.php文件中的hello类的world方法。</p>